package com.ilxqx.framework.system.service;

import com.ilxqx.framework.system.po.ItemEntry;

import java.util.List;

/**
 * 发送邮件服务类
 * @author venus
 */
public interface MailService {

    /**
     * 发送简单的邮件
     * @param to 收件人
     * @param subject 邮件题目（主题）
     * @param content 邮件内容
     */
    void sendSimpleMail(String to, String subject, String content);

    /**
     * 发送给多个人同一份邮件
     * @param to 收件人列表
     * @param subject 邮件题目
     * @param content 邮件内容
     */
    void sendSimpleMail(List<String> to, String subject, String content);

    /**
     * 发送html邮件
     * @param to 收件人
     * @param subject 邮件题目
     * @param content 邮件内容
     */
    void sendHtmlMail(String to, String subject, String content);

    /**
     * 发送html邮件给多个人
     * @param to 收件人列表
     * @param subject 邮件题目
     * @param content 邮件内容
     */
    void sendHtmlMail(List<String> to, String subject, String content);

    /**
     * 发送带附件的邮件
     * @param to 收件人
     * @param subject 邮件题目
     * @param content 邮件内容（html）
     * @param files 邮件附件（一个或多个）
     */
    void sendAttachmentsMail(String to, String subject, String content, List<String> files);

    /**
     * 发送带附件的邮件给多个人
     * @param to 收件人列表
     * @param subject 邮件题目
     * @param content 邮件内容（html）
     * @param files 邮件附件（一个或多个）
     */
    void sendAttachmentsMail(List<String> to, String subject, String content, List<String> files);

    /**
     * 发送html邮件，包含多媒体替换内容
     * @param to 收件人
     * @param subject 邮件题目
     * @param content 邮件内容（html）
     * @param inlines 媒体替换内容列表
     */
    void sendHtmlMailWithInline(String to, String subject, String content, List<ItemEntry> inlines);

    /**
     * 发送html邮件，包含多媒体替换内容
     * @param to 收件人列表
     * @param subject 邮件题目
     * @param content 邮件内容（html）
     * @param inlines 媒体替换内容列表
     */
    void sendHtmlMailWithInline(List<String> to, String subject, String content, List<ItemEntry> inlines);

    /**
     * 发送html带附件邮件，包含多媒体替换内容
     * @param to 收件人
     * @param subject 邮件题目
     * @param content 邮件内容（html）
     * @param files 附件列表
     * @param inlines 媒体替换内容列表
     */
    void sendAttachmentsMailWithInline(String to, String subject, String content, List<String> files, List<ItemEntry> inlines);

    /**
     * 发送html带附件邮件，包含多媒体替换内容
     * @param to 收件人列表
     * @param subject 邮件题目
     * @param content 邮件内容（html）
     * @param files 附件列表
     * @param inlines 媒体替换内容列表
     */
    void sendAttachmentsMailWithInline(List<String> to, String subject, String content, List<String> files, List<ItemEntry> inlines);

}
